/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.j2ee.compumake.dominio;

import java.util.ArrayList;

/************************************************************************
 **                                                                    **
 ** Nombre: Pedido.java                                               **
 ** Version: v1.0.0                                                    **
 ** Autor: amado.cante                                                 **
 ** Creado: 27/05/2013                                                 **
 ** Modificado:                                                        **
 ** Diagrama:                                                          **
 ** Caso de uso:                                                       **
 **                                                                    **
 ***********************************************************************/
public class Pedido {
    
    private int idPedido;
    private ArrayList<ComponentePedido> componentes;
    private String fechaSolicitud;
    private String fechaEntrega;
    private Sucursal sucursalEntrega;
    private Usuario usuario;
    private double precio;

    public Pedido(ArrayList<ComponentePedido> componentes, String fechaSolicitud, String fechaEntrega, Sucursal sucursalEntrega, Usuario usuario, int idPedido, double precio) {
        this.componentes = componentes;
        this.fechaSolicitud = fechaSolicitud;
        this.fechaEntrega = fechaEntrega;
        this.sucursalEntrega = sucursalEntrega;
        this.usuario = usuario;
        this.idPedido = idPedido;
        this.precio = precio;
    }

    public Pedido(ArrayList<Producto> componentes, String fechaSolicitud, Sucursal sucursalEntrega, Usuario usuario) {
        this.fechaSolicitud = fechaSolicitud;
        this.sucursalEntrega = sucursalEntrega;
        this.usuario = usuario;
        this.componentes = this.convertirProductosComponentesPedido(componentes);
        this.precio = this.calcularPrecioPedido(this.componentes);
    }

    public int getIdPedido() {
        return idPedido;
    }

    public void setIdPedido(int idPedido) {
        this.idPedido = idPedido;
    }
    
    public void calcularPrecioPedido(){
        double calculado = 0.0;
        for(int i=0;i<this.componentes.size();i++){
            calculado+=componentes.get(i).getProducto().getPrecio();
        }
        this.precio = calculado;
    }
    
    private ArrayList<ComponentePedido> convertirProductosComponentesPedido(ArrayList<Producto> productos){
        ArrayList<ComponentePedido> listaComponentes = new ArrayList<>();
        for(int i=0; i<productos.size();i++){
            ComponentePedido componente = new ComponentePedido(productos.get(i));
            listaComponentes.add(componente);
        }
        return listaComponentes;
    }
    
    private double calcularPrecioPedido(ArrayList<ComponentePedido> listaComponentes){
        double precioPedido = 0.0;
        for(int i=0;i<listaComponentes.size();i++){
            precioPedido+=listaComponentes.get(i).getProducto().getPrecio();
        }
        return precioPedido;
    }
    public ArrayList<ComponentePedido> getComponentes() {
        return componentes;
    }

    public void setComponentes(ArrayList<ComponentePedido> componentes) {
        this.componentes = componentes;
    }

    public String getFechaSolicitud() {
        return fechaSolicitud;
    }

    public void setFechaSolicitud(String fechaSolicitud) {
        this.fechaSolicitud = fechaSolicitud;
    }

    public String getFechaEntrega() {
        return fechaEntrega;
    }

    public void setFechaEntrega(String fechaEntrega) {
        this.fechaEntrega = fechaEntrega;
    }

    public Sucursal getSucursalEntrega() {
        return sucursalEntrega;
    }

    public void setSucursalEntrega(Sucursal sucursalEntrega) {
        this.sucursalEntrega = sucursalEntrega;
    }

    public double getPrecio() {
        return precio;
    }

    public void setPrecio(double precio) {
        this.precio = precio;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

}
